package Datas_Structure.LianBiao;

/**
 * 双向循环链表
 */
public class LoopNode {
    //上一个节点
    LoopNode pre = this;
    //下一个节点
    LoopNode next = this;
    //数据
    int data;

    public LoopNode(int data) {
        this.data = data;
    }

    public LoopNode() {
    }

    /**
     * 上一个节点
     */
    public LoopNode preNode(){
        return this.pre;
    }
    /**
     * 下一个节点
     */
    public LoopNode nextNode(){
        return this.next;
    }
    /**
     * 获取数据
     */
    public int getData(){
        return this.data;
    }
    /**.
     * 添加
     */
    public void addNode(LoopNode node){
        //将当前节点的下一个节点取出
        LoopNode newNode = this.next;
        //把node赋给当前节点的下一个节点
        this.next = node;
        //让node的上一个节点指向当前节点
        node.pre = this;
        //把newNode赋给node的下一个节点
        node.next = newNode;
        //让newNode的上一个节点指向node == 把node赋给newNode的上个节点
         newNode.pre = node;
    }

}

class Test{
    public static void main(String[] args) {
        LoopNode node = new LoopNode(1);
        LoopNode node1 = new LoopNode(2);
        LoopNode node2 = new LoopNode(3);
        node.addNode(node1);
        node1.addNode(node2);
        System.out.println(node.getData());
        System.out.println(node.next.getData());
        System.out.println(node2.pre.getData());
    }
}